package GUI;

import java.awt.Image;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.ImageIcon;

import Datos.Usuario;

/**
 * 
 * @author Pablo y Carlos Mazo
 */
public class VentanaPartida extends javax.swing.JFrame implements MouseListener {

	// Variables declaration - do not modify
	private javax.swing.JLabel jLabel1;
	private javax.swing.JLabel jLabel2;
	private javax.swing.JLabel jLabel3;
	private javax.swing.JLabel jLabel4;
	private javax.swing.JLabel jLabel6;
	private javax.swing.JMenu jMenu1;
	private javax.swing.JMenuBar jMenuBar1;
	private javax.swing.JMenuItem jMenuGuardar;
	private javax.swing.JMenuItem jMenuSalir;
	private javax.swing.JTextField nom1;
	private javax.swing.JTextField nom2;
	private javax.swing.JTextField punt1;
	private javax.swing.JTextField punt2;
	private boolean convertidaX;
	private boolean convertidaY;
	int id;
	int[][] fichas;
	int posX;
	int posY;
	int color;
	int turno;
	private Usuario u1;
	private Usuario u2;
	int puntuacion1;
	int puntuacion2;
	boolean topeIzda = false;
	boolean topeIzdaArriba = false;
	boolean topeArriba = false;
	boolean topeDcha = false;
	boolean topeAbajo = false;
	boolean topeDchaAbajo = false;
	boolean topeIzdAbajo = false;
	boolean topeDchaArriba = false;

	public VentanaPartida() {
	}

	/**
	 * Creates new form Partida
	 */
	public VentanaPartida(Usuario u1, Usuario u2) {
		initComponents();
		this.setLocationRelativeTo(null);// Para que la ventana aparezca en el
											// centro de la pantalla
		Login l = new Login();
		this.u1 = u1;
		this.u2 = u2;
		nom1.setText(u1.getNick());
		nom1.setEditable(false);
		nom2.setText(u2.getNick());
		nom1.setEditable(false);
		this.punt1.setText("0");
		this.punt2.setText("0");
		iniciarPartida();

	}

	public void iniciarPartida() {

		// Siempre empieza el jugador de la izda y siempre juega con negras (1)
		// PENSAR COMO HACER QUE SALGAN LAS 4 INICIALES ANTES DEL CLICK
		// Jugara hasta que no pueda colocar mas fichas, entonces se pasara el
		// turno a el otro jugador.

		// Inicializamos la matriz a 2 para evitar sobrepintado
		fichas = new int[10][10];
		for (int i = 0; i <= fichas.length - 1; i++) {
			for (int j = 0; j <= fichas[i].length - 1; j++) {
				fichas[i][j] = 2;
			}
		}

		// Pintamos las 4 fichas iniciales
		fichas[4][4] = 0;
		fichas[5][5] = 0;
		fichas[4][5] = 1;
		fichas[5][4] = 1;

		// 1 == negro, 0 == blanco
		setColor(1);
		setTurno(1);
		dibujarFichas(fichas, this);
		System.out.println("INICIALIZADA");
		this.getNom1().setText("SU TURNO");

	}

	public void cambiaTurno() {
		if (getColor() == 1) {
			setColor(0);
		} else if (getColor() == 0) {
			setColor(1);
		}
		if (getTurno() == 1) {
			setTurno(0);
		} else if (getTurno() == 0) {
			setTurno(1);
		}

		if (getTurno() == 1) {
			this.getNom1().setText("SU TURNO");
			this.getNom2().setText("Manolo");
		} else if (getTurno() == 0) {
			this.getNom2().setText("SU TURNO");
			this.getNom1().setText("Paco");
		}
	}

	public void jugar(int posX, int posY, VentanaPartida v1) {

		if (noHayNingunaPosicionValida()) {
			System.out
					.println("CAMBIA TURNO ES" + noHayNingunaPosicionValida());

			cambiaTurno();

			System.out.println("EL COLOR ES " + getColor());
			System.out.println("EL TURNO ES " + getTurno());
		}
		// Proceso de colocacion de fichas de cada usuario y de cambio de turno
		if (posicionValida(posX, posY) == true) {

			// System.out.println("EL COLOR ES" + color);
			// System.out.println("EL TURNO ES" + turno);
			comprobarComerOLD(fichas, posX, posY, color);
			// comprobarComerNEW(fichas, color);
			contarPuntos();
			this.punt1.setText(getPuntuacion1());
			this.punt2.setText(getPuntuacion2());
			dibujarFichas(fichas, this);
		}
		if (noHayNingunaPosicionValida()) {
			System.out
					.println("CAMBIA TURNO ES" + noHayNingunaPosicionValida());
			cambiaTurno();
		}
		if (!noHayNingunaPosicionValida()) {
			cambiaTurno();
		}
	}

	public void contarPuntos() {
		puntuacion1 = 0;
		puntuacion2 = 0;
		for (int i = 1; i <= 8; i++) {
			for (int j = 1; j <= 8; j++) {

				if (fichas[i][j] == 1) {
					puntuacion1++;

				}
				if (fichas[i][j] == 0) {
					puntuacion2++;

				}
			}

		}

	}

	public boolean noHayNingunaPosicionValida() {

		boolean valida = false;
		boolean cambiaTurno = false;
		int posX;
		int posY;

		for (int i = 1; i <= 8; i++) {
			for (int j = 1; j <= 8; j++) {

				posX = i;
				posY = j;

				if ((fichas[i - 1][posY] != color)
						&& (fichas[i - 1][posY] != 2) && (fichas[i][posY] == 2)) {
					valida = true;
				}
				if ((fichas[i - 1][posY - 1] != color)
						&& (fichas[posX - 1][posY - 1] != 2)
						&& (fichas[posX][posY] == 2)) {
					valida = true;
				}
				if ((fichas[posX][posY - 1] != color)
						&& (fichas[posX][posY - 1] != 2)
						&& (fichas[posX][posY] == 2)) {
					valida = true;
				}
				if ((fichas[posX + 1][posY] != color)
						&& (fichas[posX + 1][posY] != 2)
						&& (fichas[posX][posY] == 2)) {
					valida = true;
				}
				if ((fichas[posX + 1][posY + 1] != color)
						&& (fichas[posX + 1][posY + 1] != 2)
						&& (fichas[posX][posY] == 2)) {
					valida = true;
				}
				if ((fichas[posX][posY + 1] != color)
						&& (fichas[posX][posY + 1] != 2)
						&& (fichas[posX][posY] == 2)) {
					valida = true;
				}
				if ((fichas[posX + 1][posY - 1] != color)
						&& (fichas[posX + 1][posY - 1] != 2)
						&& (fichas[posX][posY] == 2)) {
					valida = true;
				}
				if ((fichas[posX - 1][posY + 1] != color)
						&& (fichas[posX - 1][posY + 1] != 2)
						&& (fichas[posX][posY] == 2)) {
					valida = true;
				}
			}
		}
		if (!valida) {
			cambiaTurno = true;
			System.out.println("TURNO CAMBIADO");
			if (!cambiaTurno) {
				System.out.println("TURNO  NO  CAMBIADO");
			}
		}
		return cambiaTurno;
	}

	public boolean posicionValida(int posX, int posY) {

		// System.out.println("Posicion en arrayValida posX " + posX + " posY "+
		// posY);
		boolean valida = false;

		if ((fichas[posX][posY] == 2)) {

			if ((fichas[posX - 1][posY] != color)
					&& (fichas[posX - 1][posY] != 2)) {
				valida = true;
			} else if ((fichas[posX - 1][posY - 1] != color)
					&& (fichas[posX - 1][posY - 1] != 2)) {
				valida = true;
			} else if ((fichas[posX][posY - 1] != color)
					&& (fichas[posX][posY - 1] != 2)) {
				valida = true;
			} else if ((fichas[posX + 1][posY] != color)
					&& (fichas[posX + 1][posY] != 2)) {
				valida = true;
			} else if ((fichas[posX + 1][posY + 1] != color)
					&& (fichas[posX + 1][posY + 1] != 2)) {
				valida = true;
			} else if ((fichas[posX][posY + 1] != color)
					&& (fichas[posX][posY + 1] != 2)) {
				valida = true;
			} else if ((fichas[posX + 1][posY - 1] != color)
					&& (fichas[posX + 1][posY - 1] != 2)) {
				valida = true;
			} else if ((fichas[posX - 1][posY + 1] != color)
					&& (fichas[posX - 1][posY + 1] != 2)) {
				valida = true;
			}
		}
		if (valida) {
			fichas[posX][posY] = getColor();
			System.out.println("POSICION VALIDA");
		}
		if (!valida) {
			System.out.println("POSICION  NO  VALIDA");
		}
		return valida;

	}

	public void comprobarComerOLD(int[][] fichas, int posX, int posY, int color) {
		int i = 1, j = 1;

		while ((fichas[posX - i][posY] != color) && (posX - i >= 1)
				&& (posY >= 1)) {

			if (fichas[posX - i][posY] == 1) {
				fichas[posX - i][posY] = 0;
			} else if (fichas[posX - i][posY] == 1) {
				fichas[posX - i][posY] = 0;
			}
			i++;

		}
		i = 1;
		j = 1;
		while ((fichas[posX - i][posY - j] != color) && (posX - i >= 1)
				&& (posY - j >= 1)) {

			if (fichas[posX - i][posY - j] == 1) {
				fichas[posX - i][posY - j] = 0;
			} else if (fichas[posX - i][posY - j] == 0) {
				fichas[posX - i][posY - j] = 1;
			}
			i++;
			j++;

		}
		i = 1;
		j = 1;
		while ((fichas[posX][posY - j] != color) && (posX >= 1)
				&& (posY - j >= 1)) {

			if (fichas[posX][posY - j] == 1) {
				fichas[posX][posY - j] = 0;
			} else if (fichas[posX][posY - j] == 0) {
				fichas[posX][posY - j] = 1;
			}
			j++;

		}
		i = 1;
		j = 1;
		while ((fichas[posX + i][posY] != color) && (posX + i <= 8)
				&& (posY >= 1)) {
			// System.out.println("paso por bucle");
			// System.out.println("Posicion en BUCLE posX " + (posX + i) +
			// " posY " + posY);
			if (fichas[posX + i][posY] == 1) {
				fichas[posX + i][posY] = 0;
			} else if (fichas[posX + i][posY] == 0) {
				fichas[posX + i][posY] = 1;
			}
			i++;

		}
		i = 1;
		j = 1;
		while ((fichas[posX][posY + j] != color) && (posX >= 1)
				&& (posY + j <= 8)) {

			if (fichas[posX][posY + j] == 1) {
				fichas[posX][posY + j] = 0;
			} else if (fichas[posX][posY + j] == 0) {
				fichas[posX][posY + j] = 1;
			}
			j++;

		}
		i = 1;
		j = 1;
		while ((fichas[posX + i][posY + j] != color) && (posX + i <= 8)
				&& (posY + j >= 8)) {

			if (fichas[posX + i][posY + j] == 1) {
				fichas[posX + i][posY] = 0;
			} else if (fichas[posX + i][posY + j] == 0) {
				fichas[posX + i][posY + j] = 1;
			}
			i++;
			j++;

		}
		i = 1;
		j = 1;
		while ((fichas[posX - i][posY + j] != color) && (posX - i >= 1)
				&& (posY + j <= 8)) {

			if (fichas[posX - i][posY + j] == 1) {
				fichas[posX - i][posY + j] = 0;
			} else if (fichas[posX - i][posY + j] == 0) {
				fichas[posX - i][posY + j] = 1;
			}
			i++;
			j++;

		}
		i = 1;
		j = 1;
		while ((fichas[posX + i][posY - j] != color) && (posX + i <= 8)
				&& (posY - j >= 1)) {

			if (fichas[posX + i][posY - j] == 1) {
				fichas[posX + i][posY - j] = 0;
			} else if (fichas[posX + i][posY - j] == 0) {
				fichas[posX + i][posY - j] = 1;
			}
			i++;
			j++;

		}
	}

	public void comprobarComerNEW(int[][] fichas, int color) {
		int i = 1, j = 1;

		for (int t = 1; t <= 8; t++) {
			for (int s = 1; s <= 8; s++) {
				int posX = t;
				int posY = s;

				while (!topeIzda && (posX - i > 1)) {
					if ((fichas[posX - i][posY] == color) && (posY >= 1)) {
						topeIzda = true;
					} else
						i++;
				}
				i = 1;
				while (posX - i >= 1 && topeIzda) {
					while ((fichas[posX - i][posY] != color) && (posY >= 1)) {

						if (fichas[posX - i][posY] == 1) {
							fichas[posX - i][posY] = 0;
						} else if (fichas[posX - i][posY] == 1) {
							fichas[posX - i][posY] = 0;
						}
						i++;
					}
				}
				i = 1;
				j = 1;

				while (!topeIzdaArriba && (posY - j > 1) && (posX - i > 1)) {
					if ((fichas[posX - i][posY - j] == color) && (posY >= 1)) {
						topeIzdaArriba = true;
					} else
						j++;
					i++;
				}
				i = 1;
				j = 1;
				while (topeIzdaArriba && (fichas[posX - i][posY - j] != color)
						&& (posX - i >= 1) && (posY - j >= 1)) {

					if (fichas[posX - i][posY - j] == 1) {
						fichas[posX - i][posY - j] = 0;
					} else if (fichas[posX - i][posY - j] == 0) {
						fichas[posX - i][posY - j] = 1;
					}
					i++;
					j++;

				}
				i = 1;
				j = 1;

				while (!topeArriba && (posY - j > 1)) {
					if ((fichas[posX][posY - j] == color) && (posY >= 1)) {
						topeArriba = true;
					} else
						j++;
				}
				j = 1;
				while (topeArriba && (fichas[posX][posY - j] != color)
						&& (posX >= 1) && (posY - j >= 1)) {

					if (fichas[posX][posY - j] == 1) {
						fichas[posX][posY - j] = 0;
					} else if (fichas[posX][posY - j] == 0) {
						fichas[posX][posY - j] = 1;
					}
					j++;

				}
				i = 1;
				j = 1;

				while (!topeDcha && (posX + i < 8)) {
					if ((fichas[posX + i][posY] == color) && (posY >= 1)) {
						topeDcha = true;
					} else
						i++;
				}
				i = 1;
				while ((fichas[posX + i][posY] != color) && (posX + i <= 8)
						&& (posY >= 1)) {
					// System.out.println("paso por bucle");
					// System.out.println("Posicion en BUCLE posX " + (posX + i)
					// +
					// " posY " + posY);
					if (fichas[posX + i][posY] == 1) {
						fichas[posX + i][posY] = 0;
					} else if (fichas[posX + i][posY] == 0) {
						fichas[posX + i][posY] = 1;
					}
					i++;

				}
				i = 1;
				j = 1;

				while (!topeAbajo && (posY + j < 8)) {
					if ((fichas[posX][posY + j] == color) && (posY >= 1)) {
						topeAbajo = true;
					}
					j++;
				}
				j = 1;
				while (topeAbajo && (fichas[posX][posY + j] != color)
						&& (posX >= 1) && (posY + j <= 8)) {

					if (fichas[posX][posY + j] == 1) {
						fichas[posX][posY + j] = 0;
					} else if (fichas[posX][posY + j] == 0) {
						fichas[posX][posY + j] = 1;
					}
					j++;

				}
				i = 1;
				j = 1;

				while (!topeDchaAbajo && (posX + i < 8) && (posY + j < 8)) {
					if ((fichas[posX + i][posY + j] == color)) {
						topeDchaAbajo = true;
					} else
						i++;
					j++;
				}
				i = 1;
				j = 1;

				while (topeDchaAbajo && (fichas[posX + i][posY + j] != color)
						&& (posX + i <= 8) && (posY + j <= 8)) {

					if (fichas[posX + i][posY + j] == 1) {
						fichas[posX + i][posY] = 0;
					} else if (fichas[posX + i][posY + j] == 0) {
						fichas[posX + i][posY + j] = 1;
					}

				}
				i++;
				j++;
			}
			i = 1;
			j = 1;

			while (topeIzdAbajo && (posX - i > 1) && (posY + j < 8)) {
				if ((fichas[posX - i][posY + j] == color) && (posY >= 1)) {
					topeIzdAbajo = true;
				} else
					i++;
				j++;
			}
			i = 1;
			j = 1;
			while (topeIzdAbajo && (fichas[posX - i][posY + j] != color)
					&& (posX - i >= 1) && (posY + j <= 8)) {

				if (fichas[posX - i][posY + j] == 1) {
					fichas[posX - i][posY + j] = 0;
				} else if (fichas[posX - i][posY + j] == 0) {
					fichas[posX - i][posY + j] = 1;
				}
				i++;
				j++;

			}
			i = 1;
			j = 1;

			while (!topeDchaArriba && (posX + i < 8) && (posY - j > 1)) {
				if ((fichas[posX - i][posY] == color)) {
					topeDchaArriba = true;
				} else
					i++;
				j++;
			}
			i = 1;
			j = 1;
			while (topeDchaArriba && (fichas[posX + i][posY - j] != color)
					&& (posX + i <= 8) && (posY - j >= 1)) {

				if (fichas[posX + i][posY - j] == 1) {
					fichas[posX + i][posY - j] = 0;
				} else if (fichas[posX + i][posY - j] == 0) {
					fichas[posX + i][posY - j] = 1;
				}
				i++;
				j++;

			}
		}
	}

	public void dibujarFichas(int[][] fichas, VentanaPartida v1) {

		for (int i = 0; i <= fichas.length - 1; i++) {
			for (int j = 0; j <= fichas[i].length - 1; j++) {
				int c = fichas[i][j];

				if (c == 1) {
					dibujarNegra(v1, i - 1, j);
				}
				if (c == 0) {
					dibujarBlanca(v1, i - 1, j);
				}
			}
		}
	}

	public void convertirYDibujarBlanca(int x, int y, VentanaPartida v1) {
		boolean convertidaX = false;
		boolean convertidaY = false;
		int x1 = 0;
		int x2 = 1;
		int xx = 0;
		int y1 = 0;
		int y2 = 1;
		int yy = 0;
		// System.out.println("Posicion que ENTRA posX"+x+"posY"+y);

		while (!convertidaX && (x2 < 8)) {

			if ((x >= x1) && (x <= x2)) {
				convertidaX = true;
			} else
				xx += 50;
			x2 += 1;
		}
		while (!convertidaY && convertidaX && (y2 < 8) && (yy <= 349)) {

			if ((y >= y1) && (y <= y2)) {
				convertidaY = true;
			} else
				yy += 50;
			y2 += 1;
		}
		// System.out.println("Posicion que SALE posX"+xx+"posY"+yy);
		v1.dibujarImagen("C:..\\Reversi\\images\\blanca.png", (xx), (yy - 50));
	}

	public void convertirYDibujarNegra(int x, int y, VentanaPartida v1) {
		boolean convertidaX = false;
		boolean convertidaY = false;
		int x1 = 0;
		int x2 = 1;
		int xx = 0;
		int y1 = 0;
		int y2 = 1;
		int yy = 0;
		// System.out.println("Posicion que ENTRA posX"+x+"posY"+y);

		while (!convertidaX && (x2 < 8)) {

			if ((x >= x1) && (x <= x2)) {
				convertidaX = true;
			} else
				xx += 50;
			x2 += 1;
		}
		while (!convertidaY && convertidaX && (y2 < 8) && (yy <= 349)) {

			if ((y >= y1) && (y <= y2)) {
				convertidaY = true;
			} else
				yy += 50;
			y2 += 1;
		}
		// System.out.println("Posicion que SALE posX"+xx+"posY"+yy);
		v1.dibujarImagen("C:..\\Reversi\\images\\negra.png", (xx), (yy - 50));
	}

	public void dibujarBlanca(VentanaPartida v1, int posiX, int posiY) {
		// System.out.println( "POS X "+ posiX + " POS Y: "+posiY);
		convertirYDibujarBlanca(posiX + 1, posiY, v1);
	}

	public void dibujarNegra(VentanaPartida v1, int posiX, int posiY) {
		convertirYDibujarNegra(posiX + 1, posiY, v1);
	}

	/**
	 * This method is called from within the constructor to initialize the form.
	 * WARNING: Do NOT modify this code. The content of this method is always
	 * regenerated by the Form Editor.
	 */
	private void initComponents() {

		jLabel1 = new javax.swing.JLabel();
		jLabel2 = new javax.swing.JLabel();
		nom1 = new javax.swing.JTextField();
		jLabel3 = new javax.swing.JLabel();
		nom2 = new javax.swing.JTextField();
		jLabel4 = new javax.swing.JLabel();
		jLabel6 = new javax.swing.JLabel();
		punt1 = new javax.swing.JTextField();
		punt2 = new javax.swing.JTextField();
		jMenuBar1 = new javax.swing.JMenuBar();
		jMenu1 = new javax.swing.JMenu();
		jMenuSalir = new javax.swing.JMenuItem();
		jMenuGuardar = new javax.swing.JMenuItem();

		this.addMouseListener(this);

		this.setTitle("Partida");

		setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
		setResizable(false);

		jLabel1.setIcon(new javax.swing.ImageIcon(
				"C:..\\Reversi\\images\\tablero.png")); // NOI18N

		jLabel2.setIcon(new javax.swing.ImageIcon(
				"C:..\\Reversi\\images\\FichaNegra.png")); // NOI18N

		nom1.setFont(new java.awt.Font("hooge 05_53", 1, 14)); // NOI18N
		nom1.setText("JUgador 1");

		jLabel3.setIcon(new javax.swing.ImageIcon(
				"C:..\\Reversi\\images\\FichaBlanca.png")); // NOI18N

		nom2.setFont(new java.awt.Font("hooge 05_53", 1, 14)); // NOI18N
		nom2.setText("JUgador 2");

		jLabel4.setFont(new java.awt.Font("hooge 05_53", 1, 48)); // NOI18N
		jLabel4.setText("REVERSI");

		jLabel6.setFont(new java.awt.Font("hooge 05_53", 0, 48)); // NOI18N
		jLabel6.setText(":");

		jMenu1.setBorder(javax.swing.BorderFactory
				.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
		jMenu1.setText("Opciones");

		jMenuSalir.setText("Salir");
		jMenuSalir.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				jMenuSalirActionPerformed(evt);
			}
		});
		jMenu1.add(jMenuSalir);

		jMenuGuardar.setText("Guardar Partida");
		jMenuGuardar.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				jMenuGuardarActionPerformed(evt);
			}
		});
		jMenu1.add(jMenuGuardar);

		jMenuBar1.add(jMenu1);

		setJMenuBar(jMenuBar1);

		javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
				getContentPane());
		getContentPane().setLayout(layout);
		layout.setHorizontalGroup(layout
				.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
				.addGroup(
						layout.createSequentialGroup()
								.addGroup(
										layout.createParallelGroup(
												javax.swing.GroupLayout.Alignment.LEADING)
												.addGroup(
														layout.createSequentialGroup()
																.addContainerGap()
																.addComponent(
																		nom1,
																		javax.swing.GroupLayout.PREFERRED_SIZE,
																		113,
																		javax.swing.GroupLayout.PREFERRED_SIZE)
																.addGap(18, 18,
																		18)
																.addGroup(
																		layout.createParallelGroup(
																				javax.swing.GroupLayout.Alignment.LEADING)
																				.addGroup(
																						layout.createSequentialGroup()
																								.addComponent(
																										jLabel2,
																										javax.swing.GroupLayout.PREFERRED_SIZE,
																										51,
																										javax.swing.GroupLayout.PREFERRED_SIZE)
																								.addGap(18,
																										18,
																										18)
																								.addComponent(
																										punt1,
																										javax.swing.GroupLayout.PREFERRED_SIZE,
																										70,
																										javax.swing.GroupLayout.PREFERRED_SIZE)
																								.addGap(20,
																										20,
																										20)
																								.addComponent(
																										jLabel6,
																										javax.swing.GroupLayout.PREFERRED_SIZE,
																										12,
																										javax.swing.GroupLayout.PREFERRED_SIZE)
																								.addGap(16,
																										16,
																										16)
																								.addComponent(
																										punt2,
																										javax.swing.GroupLayout.PREFERRED_SIZE,
																										70,
																										javax.swing.GroupLayout.PREFERRED_SIZE)
																								.addGap(18,
																										18,
																										18)
																								.addComponent(
																										jLabel3)
																								.addGap(18,
																										18,
																										18)
																								.addComponent(
																										nom2,
																										javax.swing.GroupLayout.PREFERRED_SIZE,
																										113,
																										javax.swing.GroupLayout.PREFERRED_SIZE))
																				.addGroup(
																						layout.createSequentialGroup()
																								.addGap(36,
																										36,
																										36)
																								.addComponent(
																										jLabel4))))
												.addGroup(
														layout.createSequentialGroup()
																.addGap(100,
																		100,
																		100)
																.addComponent(
																		jLabel1)))
								.addGap(0, 10, Short.MAX_VALUE)));
		layout.setVerticalGroup(layout
				.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
				.addGroup(
						layout.createSequentialGroup()
								.addGroup(
										layout.createParallelGroup(
												javax.swing.GroupLayout.Alignment.LEADING)
												.addGroup(
														layout.createSequentialGroup()
																.addGap(0,
																		0,
																		Short.MAX_VALUE)
																.addComponent(
																		nom1,
																		javax.swing.GroupLayout.PREFERRED_SIZE,
																		27,
																		javax.swing.GroupLayout.PREFERRED_SIZE)
																.addGap(35, 35,
																		35))
												.addGroup(
														layout.createSequentialGroup()
																.addGap(30, 30,
																		30)
																.addComponent(
																		jLabel4)
																.addGap(18, 18,
																		18)
																.addGroup(
																		layout.createParallelGroup(
																				javax.swing.GroupLayout.Alignment.TRAILING)
																				.addComponent(
																						punt1,
																						javax.swing.GroupLayout.PREFERRED_SIZE,
																						56,
																						javax.swing.GroupLayout.PREFERRED_SIZE)
																				.addComponent(
																						jLabel2)
																				.addComponent(
																						jLabel6,
																						javax.swing.GroupLayout.PREFERRED_SIZE,
																						32,
																						javax.swing.GroupLayout.PREFERRED_SIZE)
																				.addComponent(
																						punt2,
																						javax.swing.GroupLayout.PREFERRED_SIZE,
																						56,
																						javax.swing.GroupLayout.PREFERRED_SIZE)
																				.addComponent(
																						jLabel3))
																.addPreferredGap(
																		javax.swing.LayoutStyle.ComponentPlacement.RELATED,
																		26,
																		Short.MAX_VALUE))
												.addGroup(
														javax.swing.GroupLayout.Alignment.TRAILING,
														layout.createSequentialGroup()
																.addContainerGap(
																		javax.swing.GroupLayout.DEFAULT_SIZE,
																		Short.MAX_VALUE)
																.addComponent(
																		nom2,
																		javax.swing.GroupLayout.PREFERRED_SIZE,
																		27,
																		javax.swing.GroupLayout.PREFERRED_SIZE)
																.addGap(35, 35,
																		35)))
								.addComponent(jLabel1).addGap(27, 27, 27)));

		pack();
	}// </editor-fold>

	private void jMenuGuardarActionPerformed(java.awt.event.ActionEvent evt) {
		GuardarPartida gp = new GuardarPartida();
		gp.setVisible(true);
	}

	private void jMenuSalirActionPerformed(java.awt.event.ActionEvent evt) {
		this.setVisible(false);
		Menu m = new Menu();
		m.setVisible(true);
	}

	// /**
	// * @param args
	// * the command line arguments
	// */
	// public static void main(String args[]) {
	// /* Set the Nimbus look and feel */
	// // <editor-fold defaultstate="collapsed"
	// // desc=" Look and feel setting code (optional) ">
	// /*
	// * If Nimbus (introduced in Java SE 6) is not available, stay with the
	// * default look and feel. For details see
	// * http://download.oracle.com/javase
	// * /tutorial/uiswing/lookandfeel/plaf.html
	// */
	// try {
	// for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager
	// .getInstalledLookAndFeels()) {
	// if ("Nimbus".equals(info.getName())) {
	// javax.swing.UIManager.setLookAndFeel(info.getClassName());
	// break;
	// }
	// }
	// } catch (ClassNotFoundException ex) {
	// java.util.logging.Logger.getLogger(VentanaPartida.class.getName())
	// .log(java.util.logging.Level.SEVERE, null, ex);
	// } catch (InstantiationException ex) {
	// java.util.logging.Logger.getLogger(VentanaPartida.class.getName())
	// .log(java.util.logging.Level.SEVERE, null, ex);
	// } catch (IllegalAccessException ex) {
	// java.util.logging.Logger.getLogger(VentanaPartida.class.getName())
	// .log(java.util.logging.Level.SEVERE, null, ex);
	// } catch (javax.swing.UnsupportedLookAndFeelException ex) {
	// java.util.logging.Logger.getLogger(VentanaPartida.class.getName())
	// .log(java.util.logging.Level.SEVERE, null, ex);
	// }
	// // </editor-fold>
	//
	// /* Create and display the form */
	// java.awt.EventQueue.invokeLater(new Runnable() {
	// public void run() {
	// new VentanaPartida().setVisible(true);
	// }
	// });
	// // Tablero t = new Tablero ();
	// // int[][] fichas2 = new int[10][10];
	//
	// }

	/**
	 * Llama al metodo de la clase Graphics que dibuja la imagen en la ventana
	 * 
	 * @param img
	 * @param x
	 * @param y
	 */
	public void dibujarImagen(String img, int x, int y) {
		// System.out.println( "Imagen: " + img + " posx  "+x+ " posy " +y);
		ImageIcon i = new javax.swing.ImageIcon((img));
		Image im = i.getImage();
		if (im != null)
			getContentPane().getGraphics()
					.drawImage(im, x + 106, y + 247, null);
		// System.out.println("DIBUJANDO");
	}

	public void convertirPos(int x, int y) {
		convertidaX = false;
		convertidaY = false;
		int x1 = 0;
		int x2 = 50;
		int xx = 0;
		int y1 = 0;
		int y2 = 50;
		int yy = 0;

		while (!convertidaX && x2 < 401) {

			if (x > x1 && x < x2) {
				convertidaX = true;
				x = xx;
			}
			xx += 1;
			x1 += 50;
			x2 += 50;
		}
		while (!convertidaY && convertidaX && y2 < 401) {

			if (y > y1 && y < y2) {
				convertidaY = true;
				y = yy;
			}
			yy += 1;
			y1 += 50;
			y2 += 50;
		}

		// System.out.println("Posicion en array posX"+x+"posY"+y);
		jugar(x + 1, y + 1, this);
		System.out.println("Posicion en array posX" + x + "posY" + y);
	}

	@Override
	public void mouseClicked(MouseEvent e) {

		Point pV = this.getLocation();
		Point p = MouseInfo.getPointerInfo().getLocation();
		int x = (p.x - pV.x) - 104;
		int y = (p.y - pV.y) - 242;

		// System.out.println("POSICION DE CLICK pos X"+ x +"pos Y"+ y);
		convertirPos(x, y);
	}

	@Override
	public void mouseEntered(MouseEvent e) {

	}

	@Override
	public void mouseExited(MouseEvent e) {

	}

	@Override
	public void mousePressed(MouseEvent e) {

	}

	@Override
	public void mouseReleased(MouseEvent e) {

	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public int[][] getFichas() {
		return fichas;
	}

	public void setFichas(int[][] fichas) {
		this.fichas = fichas;
	}

	public int getPosX() {
		return posX;
	}

	public void setPosX(int posX) {
		this.posX = posX;
	}

	public int getPosY() {
		return posY;
	}

	public void setPosY(int posY) {
		this.posY = posY;
	}

	public int getColor() {
		return color;
	}

	public void setColor(int color) {
		this.color = color;
	}

	public javax.swing.JTextField getNom1() {
		return nom1;
	}

	public void setNom1(javax.swing.JTextField nom1) {
		this.nom1 = nom1;
	}

	public javax.swing.JTextField getNom2() {
		return nom2;
	}

	public void setNom2(javax.swing.JTextField nom2) {
		this.nom2 = nom2;
	}

	public int getTurno() {
		return turno;
	}

	public void setTurno(int turno) {
		this.turno = turno;
	}

	public Usuario getU1() {
		return u1;
	}

	public void setU1(Usuario u1) {
		this.u1 = u1;
	}

	public Usuario getU2() {
		return u2;
	}

	public void setU2(Usuario u2) {
		this.u2 = u2;
	}

	public String getPuntuacion1() {
		String s1 = "" + puntuacion1;

		return s1;
	}

	public void setPuntuacion1(int puntuacion1) {
		this.puntuacion1 = puntuacion1;
	}

	public String getPuntuacion2() {
		String s2 = "" + puntuacion2;

		return s2;
	}

	public void setPuntuacion2(int puntuacion2) {
		this.puntuacion2 = puntuacion2;
	}

	public javax.swing.JTextField getPunt1() {
		return punt1;
	}

	public void setPunt1(javax.swing.JTextField punt1) {
		this.punt1 = punt1;
	}

	public javax.swing.JTextField getPunt2() {
		return punt2;
	}

	public void setPunt2(javax.swing.JTextField punt2) {
		this.punt2 = punt2;
	}
}
